﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Entidades.Sistema.Distribucion.CoR
{
    public sealed class ServicioExpress : ManejadorDespacho
    {
        static ServicioExpress _instancia = new ServicioExpress();

        // Constructor privado.
        private ServicioExpress()
            : base(ServicioCargaLiviana.Instancia)
        { }

        // Expone la única instancia.
        public static ServicioExpress Instancia
        {
            get
            {
                return _instancia;
            }
        }

        // Este método procesa la solicitud.
        public override TipoDeServicio Enviar(decimal peso, decimal distancia)
        {
            if (peso <= 650 && distancia < 25)
            {
                // Si el envío es apto para este servicio, se maneja la solicitud... 
                TipoDeServicio t = new TipoDeServicio();
                t.retorno = true;
                t.servicio = t.servicio = EnumTipoServicioDespacho.Express;
                return t;
            }
            else
            {
                // ...en caso contrario se delega al sucesor en la cadena.
                return base.Enviar(peso, distancia);
            }
        }
        public override string ToString()
        {
            return "ServicioExpress";
        }
    }
}
